package org.example.likou150.array;


import java.util.Arrays;

/*
* https://leetcode.cn/problems/reverse-words-in-a-string/?envType=study-plan-v2&envId=top-interview-150
* */
public class ReverseWords {
    public static void main(String[] args) {
        ReverseWords reverseWords=new ReverseWords();
        String s="hello world";
        System.out.println(reverseWords.reverseWords(s));
    }

    public String reverseWords(String s) {
        char[] charArray = s.toCharArray();
        char[] returnArray = new char[s.length()+1];
        int i = s.length()-1;
        int index=0;
        while(i>=0){
            for(;i>=0 && charArray[i]==' ';i--);
            int worldEnd=i;
            for(;i>=0 && charArray[i]!=' ';i--);
            int worldStart=i+1;
            for(;worldStart<=worldEnd;worldStart++){
                returnArray[index++]=charArray[worldStart];
            }
            returnArray[index++]=' ';
        }
        return new String(returnArray, 0, index).trim();
    }







/**
* 击败91.97
* */
//    public String reverseWords(String s) {
//        StringBuilder sb=new StringBuilder();
//        int i=s.length()-1;
//        while (i>=0){
//            for(;i>=0 && s.charAt(i)==' ';i--);
//            if (i < 0) break;
//            int wordEnd=i;
//            for(;i>=0 && s.charAt(i)!=' ';i--);
//            int wordStart=i+1;
//            if(wordStart<=wordEnd){
//                if (sb.length() > 0) sb.append(" ");
//                sb.append(s, wordStart, wordEnd+1);
//            }
//        }
//        return sb.toString();
//    }

    /**
    * 击败40%多
    * */
//    public String reverseWords(String s) {
//        String[] strs=s.split(" ");
//        StringBuilder sb=new StringBuilder();
//        for(int i=strs.length-1;i>=0;i--){
//            if("".equals(strs[i])){
//                continue;
//            }
//            if(i!=strs.length-1){
//                sb.append(" ");
//            }
//            sb.append(strs[i]);
//
//        }
//        return sb.toString();
//    }
}
